package rest.pojo.conversor;

import entidade.Produto;
import java.util.ArrayList;
import java.util.List;
import rest.pojo.ProdutoPOJO;
import static rest.pojo.conversor.ColheitaConverter.fromColheitaPOJO;
import static rest.pojo.conversor.ColheitaConverter.toColheitaPOJO;
import static rest.pojo.conversor.RasaConverter.fromRasaPOJO;
import static rest.pojo.conversor.RasaConverter.toRasaPOJO;

public class ProdutoConverter {

    private static final ProdutoConverter uniqueInstance = new ProdutoConverter();

    private ProdutoConverter() {

    }

    public static ProdutoConverter getInstance() {
        return uniqueInstance;
    }

    public static ProdutoPOJO toProdutoPOJO(Produto produto) {

        if (produto != null) {
            ProdutoPOJO resposta = new ProdutoPOJO();

            resposta.setId(produto.getId());
            resposta.setColheita(toColheitaPOJO(produto.getColheita()));
            resposta.setRasa(toRasaPOJO(produto.getRasa()));
            return resposta;

        } else {
            return null;
        }
    }

    public static Produto fromProdutoPOJO(ProdutoPOJO produtoPOJO) {
        if (produtoPOJO != null) {
            Produto resposta = new Produto();
            resposta.setId(produtoPOJO.getId());
            resposta.setColheita(fromColheitaPOJO(produtoPOJO.getColheita()));
            resposta.setRasa(fromRasaPOJO(produtoPOJO.getRasa()));

            return resposta;

        } else {
            return null;
        }
    }

    public static List<ProdutoPOJO> toProdutosPOJO(List<Produto> produtos) {
        if (produtos != null) {

            ArrayList<ProdutoPOJO> resposta = new ArrayList<>();

            produtos.stream().forEach((produto) -> {
                resposta.add(toProdutoPOJO(produto));
            });

            return resposta;
        } else {
            return null;
        }

    }

    public static List<Produto> fromProdutosPOJO(List<ProdutoPOJO> produtosPOJO) {
        if (produtosPOJO != null) {

            ArrayList<Produto> resposta = new ArrayList<>();

            produtosPOJO.stream().forEach((ProdutoPOJO produtoPOJO) -> {
                resposta.add(fromProdutoPOJO(produtoPOJO));
            });

            return resposta;
        } else {
            return null;
        }
    }
}
